﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
public partial class master_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Tbl_Usuarios User = (Tbl_Usuarios)Session["CurrentUser"];
            if (User != null && User.iRol_id != 1)
            {
                consolidar.Visible = false;
                grv_ActivoFijo.Columns[0].Visible = false;
            }
            ModContabilidad cont = new ModContabilidad();
            List<Tbl_TiposActivosFijos> listRubro = cont.getAllTiposActivo();
            Tbl_TiposActivosFijos tipoVacio = new Tbl_TiposActivosFijos();
            tipoVacio.iTipoActivo_id = 0;
            tipoVacio.sCodigoActivoFijo = "-Rubro-";
            listRubro.Insert(0, tipoVacio);
            comboRubros.DataSource = listRubro;
            comboRubros.DataTextField = "sCodigoActivoFijo";
            comboRubros.DataValueField = "iTipoActivo_id";
            comboRubros.DataBind();
            /*ModContabilidad mod = new ModContabilidad();
            List<Tbl_TiposActivosFijos> lista = mod.getAllTiposActivo();
            Tbl_TiposActivosFijos tipo = new Tbl_TiposActivosFijos();
            tipo.iTipoActivo_id = 0;
            tipo.sCodigoActivoFijo = "--";
            lista.Insert(0, tipo);
            comboRubros.DataSource = lista;
            comboRubros.DataValueField = "iTipoActivo_id";
            comboRubros.DataTextField = "sCodigoActivoFijo";
            comboRubros.DataBind();*/
            //string idActivo = Request.QueryString["ActivoID"];
        }
    }

    protected string formatDate(Object dt)
    {
        DateTime date = (DateTime)dt;

        return (date != null) ? date.ToString("dd/MM/yyyy") : "null";
    }

    protected string getCodigo(string cod)
    {
        ModContabilidad cont = new ModContabilidad();
        Tbl_ActivoFijos activo = cont.getActivoporID(Convert.ToInt32(cod));
        return (activo != null) ? activo.sCodigoActivoFijo : "null";
    }
    protected void consolidar_Click(object sender, EventArgs e)
    {
        ModContabilidad cont = new ModContabilidad();

        List<Tbl_HistorialDepreciacion> listRAWHistorial = new List<Tbl_HistorialDepreciacion>();
        foreach (GridViewRow gvRow in grv_ActivoFijo.Rows)
        {
            CheckBox ChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox"));
            if (ChkBox.Checked)
            {
                ChkBox.Checked = false;
                HiddenField rowChkBox = ((HiddenField)gvRow.FindControl("idActivo"));
                string sHistorialID = rowChkBox.Value;
                Tbl_HistorialDepreciacion historial = cont.obtenerHistorialbyID(Convert.ToInt32(sHistorialID));
                if (historial != null)
                {
                    listRAWHistorial.Add(historial);
                }
            }
        }
        List<List<Tbl_HistorialDepreciacion>> listHistorial = new List<List<Tbl_HistorialDepreciacion>>();
        List<Tbl_HistorialDepreciacion> temp = new List<Tbl_HistorialDepreciacion>();
        int i = 0;
        int idActivo = 0;
        foreach (Tbl_HistorialDepreciacion historialDepreciacion in listRAWHistorial)
        {
            if (idActivo == 0)
            {
                idActivo = historialDepreciacion.iActivoFijo_id;
            }
            if (idActivo != historialDepreciacion.iActivoFijo_id)
            {
                listHistorial.Add(temp);
                temp = new List<Tbl_HistorialDepreciacion>();
                idActivo = historialDepreciacion.iActivoFijo_id;
            }
            temp.Add(historialDepreciacion);
            if (i == (listRAWHistorial.Count - 1))
            {
                listHistorial.Add(temp);
            }
            i++;
        }
        Tbl_Usuarios user = (Tbl_Usuarios) Session["CurrentUser"];
        cont.consolidarActivo(listHistorial, user.iUsuario_id);
        grv_ActivoFijo.DataBind();
    }

    protected void checkControl(object sender, EventArgs e)
    {
        CheckBox headerChkBox = ((CheckBox)grv_ActivoFijo.HeaderRow.FindControl("chkHeader"));

        if (headerChkBox.Checked == true)
        {
            foreach (GridViewRow gvRow in grv_ActivoFijo.Rows)
            {
                CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox"));

                rowChkBox.Checked = true;
            }
        }
        else
        {
            foreach (GridViewRow gvRow in grv_ActivoFijo.Rows)
            {
                CheckBox rowChkBox = ((CheckBox)gvRow.FindControl("rowLevelCheckBox"));
                rowChkBox.Checked = false;
            }
        }
    }
    protected void comboRubros_SelectedIndexChanged(object sender, EventArgs e)
    {
        string rubro = comboRubros.SelectedValue;
        if (rubro != "0")
        {
            ModContabilidad mod = new ModContabilidad();
            Tbl_TiposActivosFijos tipo = mod.getTipo(Convert.ToInt32(rubro));
            if (tipo != null)
            {
                rubro_desc.InnerHtml = tipo.sTipoActivo;
            }
        }
        else 
        {
            rubro_desc.InnerHtml = "";
        }
    }

    protected void btnSearch_Click(object sender, EventArgs e)
    {
        //LinqDataSource1
        string rubro = comboRubros.SelectedValue;
        if (rubro != "0")
        {
            List<Tbl_HistorialDepreciacion> lista = new List<Tbl_HistorialDepreciacion>();
            ModContabilidad cont = new ModContabilidad();
            lista = cont.listHistorialDeprebyRubro(Convert.ToInt32(rubro));
            if (lista != null)
            {
                grv_ActivoFijo.DataSource = lista;
            }
            grv_ActivoFijo.DataSourceID = "";
            grv_ActivoFijo.DataBind();
        }
        else
        {
            grv_ActivoFijo.DataSourceID = "LinqDataSource1";
            grv_ActivoFijo.DataSource = null;
            grv_ActivoFijo.DataBind();
        }
    }

    private List<YearCombo> comboRange(int initYear)
    {
        List<YearCombo> lstYear = new List<YearCombo>();
        DateTime dt = DateTime.Today;
        int currentYear = dt.Year;
        YearCombo year = new YearCombo();
        lstYear.Add(year);
        for (int i = initYear; i <= currentYear; i++)
        {
            lstYear.Add(new YearCombo(i));
        }
        return lstYear;
    }

    public class YearCombo
    {
        private int year;

        public int Year
        {
            get { return year; }
            set { year = value; }
        }
        private string strYear;

        public string StrYear
        {
            get { return strYear; }
            set { strYear = value; }
        }

        public YearCombo(int y)
        {
            this.year = y;
            this.strYear = this.year + "";
        }

        public YearCombo()
        {
            this.year = 0;
            this.strYear = "-Año-";
        }
    }
    protected void grv_ActivoFijo_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        string rubro = comboRubros.SelectedValue;
        if (rubro != "0")
        {
            List<Tbl_HistorialDepreciacion> lista = new List<Tbl_HistorialDepreciacion>();
            ModContabilidad cont = new ModContabilidad();
            lista = cont.listHistorialDeprebyRubro(Convert.ToInt32(rubro));
            if (lista != null)
            {
                grv_ActivoFijo.DataSource = lista;
            }
            grv_ActivoFijo.DataSourceID = "";
            grv_ActivoFijo.PageIndex = e.NewPageIndex;
            grv_ActivoFijo.DataBind();
        }
        else
        {
            grv_ActivoFijo.DataSourceID = "LinqDataSource1";
            grv_ActivoFijo.DataSource = null;
            grv_ActivoFijo.PageIndex = e.NewPageIndex;
            grv_ActivoFijo.DataBind();
        }
    }
}